심층 합성곱 GAN(Deep Convolutional GAN, DCGAN)
DCGAN은 생성자와 판별자 신경망에 합성곱을 사용한다.
랜덤한 z를 완전 연결 층으로 적당한 크기의 새로운 벡터로 투영한다. 이 후 합성곱에 사용되는 형태로 크기를 바꿔준다.(h x w x c)
(출력 이미지 보다 작은 크기)
몇 개의 전치 합성곱(transposed convolution) 층을 사용해서 특성 맵을 원하는 출력 크기까지 업샘플링(upsampling) 한다.
전치 합성곱(transposed convolution)
합성곱 연산은 보통 특성 맵을 다운샘플링(downsampling) 하지만, 전치 합성곱 연산은 특성 맵을 업샘플링하는데 사용한다.
전치 합성곱을 이용해서 mxm 크기의 출력 특성 맴에서 입력과 출력의 연결 패턴을 유지하면서, nxn 차원 크기의 특성 맵을 얻는다.
(크기는 복원되지만 실제 행렬 값은 복원되지 않음)
전치 합성곱 & 역합성곱전치 합성곱은 분할 스트라이드 합성곱(fractionally strided convolution)라고도 부른다.
역합성곱은 합성곱의 연산의 역으로 정의되어 있다.(역합수)->실제 값을 복원
전치 합성곱은 단지 특성 공간의 차원을 복원하는데만 초점을 맞추면 실제값은 복원하지 않는다.
보통은 입력 특성 맵에 0을 끼워 넣는 것으로 행렬의 차원을 복원한다.
배치 정규화(Batch Normalization, BatchNorm, BN)
하나의 층의 입력을 정규화하고 훈련하는 동안 입력 분포의 변화를 막는다.
모델을 빠르고 안정적으로 수렴하게 만든다.
[m x h x w x c] 특성맵
배치 정규화는 계산된 통계 값을 기반으로 미니 배치의 특성을 반환한다.
1. 미니 배치 입력의 평균과 표준 편차를 계산한다.(평균과 표준편차는 c차원)
2. 배치에 있는 모든 샘플의 입력을 표준화 한다.(입력 값 원점에 맡추고, 단위 분산을 가짐)
3. 정규화된 입력을 학습되는 두 개의 파라미터 벡터로 스케일을 조정하고 이동시킨다.(두 개의 파라미터를 통해 정규화된 특성을 이동, 분산)
-각기 다른 배치들을 동일한 성질을 갇도록 항상 입력을 정규화하면, 신경망의 표현능력에 영향을 미침-> 두개의 파라미터로 조절
배치 정규화 사용 이유(최적화)배치 정규화는 내부 공변량 변화(interanl covariance shift)를 감소하기 위해 개발되었다.
내부 공변량 변화는 신경망이 훈련하는 동안 모델 파라미터가 업데이트 되기 때문에 층 활성화의 분산에 변화가 생기는 것을 말한다.
실험결과 내부 공변량 변화에 정규화의 효과가 작다는 것이 관찰되었다.
배치 정규화의 효과는 손실 함수 표면을 부드럽게 만든다.(볼록하지 않은 최적화 문제를 안정적으로 만든다.)
tf.keras.layers.BatchNormalization() 클래스를 통해 층으로 배치 정규화 단계를 수행
두개의 파라미터는 training=False 또는 training=True로 설정하여 동작을 결정할 수 있다.(훈련하는 동안만 파라미터를 업데이트)